const express = require('express');
const OpenAI = require('openai');
const router = express.Router();

// 初始化DeepSeek API客户端
const openai = new OpenAI({
  baseURL: 'https://api.deepseek.com',
  apiKey: process.env.DEEPSEEK_API_KEY || sk-e022f43fb7d84f668fc6f0c0aef9cd37 // 请在.env文件中设置DEEPSEEK_API_KEY
});

// 聊天消息接口 - 使用DeepSeek API
router.post('/chat-messages', async (req, res) => {
  try {
    const { message, files, conversationId } = req.body;
    // 验证输入
    if (!message || typeof message !== 'string' || !message.trim()) {
      return res.status(400).json({
        error: 'Message is required and must be a non-empty string'
      });
    }
    
    const queryString = String(message).trim();
    
    // 设置SSE响应头
    res.writeHead(200, {
      'Content-Type': 'text/plain; charset=utf-8',
      'Cache-Control': 'no-cache',
      'Connection': 'keep-alive',
      'Access-Control-Allow-Origin': '*',
      'Access-Control-Allow-Headers': 'Cache-Control'
    });
    
    try {
      // 调用DeepSeek API
      const completion = await openai.chat.completions.create({
        messages: [
          { role: "system", content: "You are a helpful assistant." },
          { role: "user", content: queryString }
        ],
        model: "deepseek-chat",
        stream: true // 启用流式响应
      });
      

      
      // 处理流式响应
      for await (const chunk of completion) {
        const content = chunk.choices[0]?.delta?.content;
        if (content) {
          // 发送符合前端期望格式的SSE数据
          const sseData = {
            event: 'message',
            answer: content,
            message_id: `msg_${Date.now()}`,
            conversation_id: conversationId || '',
            mode: 'chat'
          };
          
          const sseMessage = `data: ${JSON.stringify(sseData)}\n\n`;
          res.write(sseMessage);
          

        }
      }
      
      // 发送结束事件
      const endData = {
        event: 'message_end',
        message_id: `msg_${Date.now()}`,
        conversation_id: conversationId || ''
      };
      
      const endMessage = `data: ${JSON.stringify(endData)}\n\n`;
      res.write(endMessage);
      

      res.end();
      
    } catch (apiError) {
      console.error('❌ DeepSeek API 错误:', apiError);
      
      // 发送错误事件
      const errorData = {
        event: 'error',
        message: apiError.message || 'DeepSeek API调用失败',
        error: apiError.message || 'API Error'
      };
      
      const errorMessage = `data: ${JSON.stringify(errorData)}\n\n`;
      res.write(errorMessage);
      res.end();
    }
    
  } catch (error) {
    console.error('❌ 聊天接口错误:', error);
    
    // 如果还没有发送响应头，发送JSON错误响应
    if (!res.headersSent) {
      res.status(500).json({
        error: 'Internal server error',
        message: error.message
      });
    } else {
      // 如果已经开始SSE响应，发送错误事件
      const errorData = {
        event: 'error',
        message: error.message || '服务器内部错误',
        error: 'Server Error'
      };
      
      const errorMessage = `data: ${JSON.stringify(errorData)}\n\n`;
      res.write(errorMessage);
      res.end();
    }
  }
});

// 文件上传接口（保留原有功能，但可以根据需要调整）
router.post('/upload-file', async (req, res) => {
  try {
    // 这里可以实现文件上传功能
    // 目前返回简单的成功响应
    res.json({
      success: true,
      message: '文件上传功能待实现',
      file_id: `file_${Date.now()}`
    });
  } catch (error) {
    console.error('❌ 文件上传错误:', error);
    res.status(500).json({
      error: 'File upload failed',
      message: error.message
    });
  }
});

module.exports = router;